import { defineWrappedResponseHandler } from "#server/utils/handler"; import { R } from "#server/utils/response"; import { resolveCharacterIdentity } from "#server/service/character/identity"; import { getCharacterSessionByIdAndUser, updateCharacterSession } from "#server/service/character/session"; import { getCharacterCardBySlug } from "#server/service/character/character-card"; export default defineWrappedResponseHandler(async (event) => { const slug = getRouterParam(event, "slug"); const id = getRouterParam(event, "id"); if (!slug || !id) { return R.error("参数无效", null); } const card = await getCharacterCardBySlug(slug); if (!card) { return R.error("角色不存在", null); } const identity = await resolveCharacterIdentity(event); const session = await getCharacterSessionByIdAndUser(id, identity.userId, identity.tempToken); if (!session) { return R.error("会话不存在", null); } if (session.cardId !== card.id) { return R.error("会话不属于该角色", null); } const body = await readBody(event).catch(() => ({})); const modelId = typeof body?.modelId === "number" && body.modelId > 0 ? body.modelId : null; await updateCharacterSession(id, { modelId }); return R.success({ id, modelId }); });